Step 37: Middleware
Let’s revisit the global error handler:
// Global error handler!
app.use((err, req, res, next) => {
if (err) {
const code = err.status || 500;
res.status(code).json({
status: code,
message: err.message || `Internal Server Error!`,
});
}
next();
});
What we have created here is a “middleware.”
According to Express documentation:
Middleware functions are functions that have access to the request object (
req
), the response object (res
), and the next middleware function in the application's request-response cycle. The next middleware function is commonly denoted by a variable namednext
.Middleware functions can perform the following tasks:
- Execute any code.
- Make changes to the request and the response objects.
- End the request-response cycle.
- Call the next middleware function in the stack.
There is plenty of middleware made for Express applications. We will add two popular ones to our app!
Aside: I recommend skimming over Using middleware and Writing middleware for use in Express apps on the Express documentation site.